// Generated from code/ch19/Cymbol.g by ANTLR 4.9.0-SNAPSHOT


import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";

import { CompilationUnitContext } from "./CymbolParser";
import { VarDeclarationContext } from "./CymbolParser";
import { MethodDeclarationContext } from "./CymbolParser";
import { FormalParmetersContext } from "./CymbolParser";
import { BlockContext } from "./CymbolParser";
import { StructDeclarationContext } from "./CymbolParser";
import { StructMemberContext } from "./CymbolParser";
import { ClassDefinitionContext } from "./CymbolParser";
import { SuperClassContext } from "./CymbolParser";
import { ClassMemberContext } from "./CymbolParser";
import { StatementContext } from "./CymbolParser";
import { ExpressionListContext } from "./CymbolParser";
import { ExpressionContext } from "./CymbolParser";
import { AddExpressionContext } from "./CymbolParser";
import { PostfixEpressionContext } from "./CymbolParser";
import { FunctionCallContext } from "./CymbolParser";
import { FieldsCallContext } from "./CymbolParser";
import { MethodCallContext } from "./CymbolParser";
import { PrimaryContext } from "./CymbolParser";
import { TypeContext } from "./CymbolParser";


/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by `CymbolParser`.
 *
 * @param <Result> The return type of the visit operation. Use `void` for
 * operations with no return type.
 */
export interface CymbolVisitor<Result> extends ParseTreeVisitor<Result> {
	/**
	 * Visit a parse tree produced by `CymbolParser.compilationUnit`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitCompilationUnit?: (ctx: CompilationUnitContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.varDeclaration`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitVarDeclaration?: (ctx: VarDeclarationContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.methodDeclaration`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMethodDeclaration?: (ctx: MethodDeclarationContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.formalParmeters`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFormalParmeters?: (ctx: FormalParmetersContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.block`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitBlock?: (ctx: BlockContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.structDeclaration`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitStructDeclaration?: (ctx: StructDeclarationContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.structMember`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitStructMember?: (ctx: StructMemberContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.classDefinition`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitClassDefinition?: (ctx: ClassDefinitionContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.superClass`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitSuperClass?: (ctx: SuperClassContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.classMember`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitClassMember?: (ctx: ClassMemberContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.statement`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitStatement?: (ctx: StatementContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.expressionList`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitExpressionList?: (ctx: ExpressionListContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.expression`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitExpression?: (ctx: ExpressionContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.addExpression`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitAddExpression?: (ctx: AddExpressionContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.postfixEpression`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitPostfixEpression?: (ctx: PostfixEpressionContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.functionCall`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFunctionCall?: (ctx: FunctionCallContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.fieldsCall`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFieldsCall?: (ctx: FieldsCallContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.methodCall`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMethodCall?: (ctx: MethodCallContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.primary`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitPrimary?: (ctx: PrimaryContext) => Result;

	/**
	 * Visit a parse tree produced by `CymbolParser.type`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitType?: (ctx: TypeContext) => Result;
}

